package com.nb.nbbase2.codegen;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.DateType;


/**
 * 代码生成器
 */
public class CodeGenerator {

    public static void main(String[] args) {


        String local = "jdbc:mysql://127.0.0.1:3306/db_state_machine?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&useSSL=false";
        String uname ="root";
        String pwd= "root";
        //生成tidb 对应表
       // generatorCode(xeasy, xname, xpwd);
        //生成holo 对应表
        //generatorCode(holo, holoUser, holoPwd);
        generatorCode(local, uname, pwd);
    }

    private static void generatorCode(String xeasy, String uname, String pwd) {
        // liandong 代码生成路径
        String winCodePath = "D:\\data\\codeGen";

        FastAutoGenerator.create(xeasy, uname, pwd)

                .globalConfig(builder -> {
                    builder
                            .dateType(DateType.ONLY_DATE)
                            //.enableSwagger() // 开启 swagger 模式
                            //.fileOverride() // 覆盖已生成文件
                            .dateType(DateType.TIME_PACK)
                            .outputDir(winCodePath); // 指定输出目录
                })

                .packageConfig(builder -> {
                    builder.parent("com.nb.nbbase2") // 设置父包名
                            .entity("entity")
                            .mapper("mapper")
                            .service("service")
                            .serviceImpl("service.impl")
                            .controller("web.controller");
                            //.moduleName("system") // 设置父包模块名
                           // .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D:\\data\\codeGen\\mapper")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.entityBuilder()
                            .enableLombok().build();//开启Lombok


                    builder
                            .addInclude("tb_order");
                           // .addInclude("tf_first_lesson_task_leader");// 设置需要生成的表名
//                            .addInclude("qc_wechat_message_record")// 设置需要生成的表名
//                            .addInclude("sys_attachment");// 设置需要生成的表名
                    //in_dwd_ta_hs_class_roster_detail_hi

//                            .addInclude("strategy_atlas_rel"); // 设置需要生成的表名
//                            .addInclude("order_record") // 设置需要生成的表名
//                            .addInclude("payment_flow") // 设置需要生成的表名
//                            .addInclude("sk_user") // 设置需要生成的表名
//                            .addInclude("goods") // 设置需要生成的表名
//                            .addInclude("exchange_code") // 设置需要生成的表名
//                            .addInclude("exchange_record") // 设置需要生成的表名
//                            .addInclude("first_buy_rel"); // 设置需要生成的表名

                    builder.addTablePrefix("tb_");
                    builder.mapperBuilder().enableBaseColumnList().enableBaseResultMap();
                })
                //.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }
}
